// #include "buffAndEffect.hh"

// namespace buff_and_effect
// {
//     unsigned Abuff::getDamage() const {
//         return this->damage;
//     }
//     int Abuff::getRounds() const {
//         return this->rounds;
//     }
//     ICharacter& Abuff::getTarget() const {
//         return this->target;
//     }
//     std::string Abuff::getBuffName() const {
//         return this->buff_name;
//     }

//     std::string Abuff::samllInfo() const {
//         return "(" + this->buff_name + ": " + std::to_string(this->damage) + " x " + std::to_string(this->rounds) + ")";
//     }
//     std::string Abuff::bigInfo() const {
//         return this->target.getName() + " get " + std::to_string(this->damage) + " from " + this->buff_name;
//     }

//     bool Abuff::operator==(const Abuff& other_buff) const {
//         return this->buff_name == other_buff.getBuffName();
//     }

//     Abuff& Abuff::operator+=(const const Abuff& other_buff) {
//         this->rounds += other_buff.getRounds();
//         this->damage += other_buff.getDamage();
//         return *this;
//     }

//     bleed::bleed(unsigned damage, int rounds, ICharacter& target) {
//         this->damage = damage;
//         this->rounds = rounds;
//         this->target = target;
//         this->buff_name = "bled";
//     }

//     void bleed::effect() {
//         this->target.takeDamage(this->damage);
//         this->rounds -= 1;
//         if (this->rounds <= 0) {
//             this->target.removeBuff(*this);
//         }
//     }

//     blight::blight(unsigned damage, int rounds, ICharacter& target) {
//         this->damage = damage;
//         this->rounds = rounds;
//         this->target = target;
//         this->buff_name = "blighted";
//     }

//     void blight::effect() {
//         this->target.takeDamage(this->damage);
//         this->rounds -= 1;
//         if (this->rounds <= 0) {
//             this->target.removeBuff(*this);
//         }
//     }

//     stun::stun(ICharacter& target) {
//         this->damage = 0;
//         this->rounds = 1;
//         this->target = target;
//         this->buff_name = "stunned";
//     }

//     void stun::effect() {
//         this->target.sitRoundFinsh(true);
//         this->rounds -= 1;
//         if (this->rounds <= 0) {
//             this->target.removeBuff(*this);
//         }
//     }
// }